program hybrid_caf_mpi include 'mpif.h' integer :: my_rank, numb_procs integer :: i, num_ranks, rank real(kind=8) :: coarray[*] real(kind=8) :: send_buf, sum, RESULT1, RESULT2 call MPI_INIT(ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD, num_ranks, ierr) print*, 'total mpi_ranks is', num_ranks,'my mpi_rank is', rank my_rank = this_image() numb_procs = num_images() do i=1, numb_procs if (my_rank == i) then print*, 'total_images is',numb_procs,'my image is ',my_rank send_buf = 1.0 coarray[i] = 2*i end if sync all end do call MPI_REDUCE(coarray[my_rank],RESULT2,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD,ierr); 100 format("coarray_var=", f10.5, " image=", i3) call MPI_BARRIER (MPI_COMM_WORLD, ierr) if (rank == 0) then print*,'RESULT OF REDUCTION FROM COARRAY IS ',RESULT2 end if call MPI_BARRIER (MPI_COMM_WORLD, ierr) call MPI_Finalize(ierr) end program hybrid_caf_mpi